shell expansions
シーケンスの展開
code:sh
echo {a..c} # a b c
echo {0..2}a # 0a 1a 2a
カンマ区切りの展開
code:sh
echo {a,b,1} # a b 1
echo x{b,c,d}y # xby, xcy, xdy
code:sh
echo ~/tmp # /home/<user>/tmp
code:sh
x=1
echo $x # 1
echo $xyen #
echo ${x}yen # 1yen
要素数の取り出し: #
code:sh
a=1234
echo ${#a} # 4
値の切り出し
code:sh
var=20201011_fujisan_cosmos.jpg
# 先頭から最短一致までを切り捨て: <param>#<word>
echo ${var#*_} # fujisan_cosmos.jpg
# 先頭から最長一致までを切り捨て: <param>##<word>
echo ${var##*_} # cosmos.jpg
# 末尾から最短一致までを切り捨て: <param>%<word>
echo ${var%_*} # 20201011_fujisan
# 末尾から最長一致までを切り捨て: <param>%%<word>
echo ${var%%_*} # 20201011
code:sh
echo echo hoge # hoge
echo echo echo hoge # echo hoge (入れ子不可)
echo $(echo $(echo hoge)) # hoge (入れ子可)
code:sh
echo $((1+1)) # 2
echo 1+1 # 1+1
echo $(( $(date +%s) / (60*60*24*365) )) # 50
シェル変数IFSに設定した文字を区切りとして、" "で囲まれていない引数とかを分割して読み取る code:sh
echo 1 2 $((3+4)) # 1 2 7
マッチするファイル名が存在する場合に、*, ?, []を展開する
code:sh
# *: 任意の文字列にマッチする
ls ~/Pictures/*.png
# ?: 任意の1文字にマッチする
ls ~/Pictures/image?.png # image0.pngとかにマッチ
ls ~/Pictures/ab*.png # aまたはbで始まるpngファイルにマッチ 出典
bash.icon